Apache Commons Collections লাইব্রেরি Comparator সম্পর্কিত কিছু শক্তিশালী ক্লাস এবং ফাংশন সরবরাহ করে যা কোলেকশনগুলির মধ্যে উপাদান তুলনা এবং সাজানো (sorting) সহজ করে তোলে। এর মধ্যে দুটি গুরুত্বপূর্ণ ক্লাস হল ChainedComparator এবং ReverseComparator। এই ক্লাসগুলি Comparator ইন্টারফেসের মাধ্যমে কাস্টম অর্ডারিং এবং তুলনা কৌশল প্রয়োগ করতে সাহায্য করে।
এই নিবন্ধে, আমরা ChainedComparator এবং ReverseComparator এর কার্যকারিতা এবং তাদের ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করব।
ChainedComparator হল একটি Comparator যা একাধিক Comparator কে একত্রে ব্যবহার করে, অর্থাৎ এটি একাধিক তুলনা ফাংশন (comparators) কে শৃঙ্খলে যুক্ত করে। আপনি যখন একাধিক তুলনা ভিত্তিক সাজানোর প্রয়োজন অনুভব করেন, তখন ChainedComparator একটি কার্যকরী সমাধান। এটি একাধিক Comparator ব্যবহার করে প্রথমে একটি Comparator প্রয়োগ করে, এবং যদি দুটি উপাদান সমান হয়, তখন পরবর্তী Comparator প্রয়োগ করা হয়।
import org.apache.commons.collections4.ComparatorUtils;
import org.apache.commons.collections4.ComparatorUtils.ChainedComparator;
import java.util.*;
public class ChainedComparatorExample {
public static void main(String[] args) {
// Create a list of objects to be sorted
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
list.add("blueberry");
// Create comparators
Comparator<String> lengthComparator = Comparator.comparingInt(String::length);
Comparator<String> alphabetComparator = Comparator.naturalOrder();
// Chain comparators
ChainedComparator<String> chainedComparator = new ChainedComparator<>(lengthComparator, alphabetComparator);
// Sort using ChainedComparator
Collections.sort(list, chainedComparator);
// Print sorted list
System.out.println(list);
}
}
এখানে:
lengthComparator
প্রথমে String এর দৈর্ঘ্য অনুসারে তুলনা করবে।alphabetComparator
দ্বিতীয় পর্যায়ে আলফাবেটিকাল (অক্ষরগত) তুলনা করবে যদি প্রথম Comparator সমান হয়।আউটপুট:
[apple, banana, cherry, blueberry]
এখানে প্রথমে শব্দগুলির দৈর্ঘ্য অনুযায়ী সাজানো হয়েছে, এবং যদি দৈর্ঘ্য সমান হয়, তবে আলফাবেটিক সাজানো হয়েছে।
ReverseComparator হল একটি Comparator যা একটি বিদ্যমান Comparator কে রিভার্স করে (reverse)। এর মানে হল যে, যদি আপনার একটি সাধারণ Comparator থাকে যা ছোট থেকে বড় (ascending order) সাজানো থাকে, তবে ReverseComparator তাকে বড় থেকে ছোট (descending order) সাজানোতে পরিণত করবে। এটি ব্যবহার করে আপনি সহজেই কোন Comparator কে উল্টো সাজানোর জন্য ব্যবহার করতে পারেন।
import org.apache.commons.collections4.ComparatorUtils;
import org.apache.commons.collections4.ComparatorUtils.ReverseComparator;
import java.util.*;
public class ReverseComparatorExample {
public static void main(String[] args) {
// Create a list of numbers to be sorted
List<Integer> list = new ArrayList<>();
list.add(3);
list.add(1);
list.add(4);
list.add(2);
// Create a comparator for natural order (ascending)
Comparator<Integer> ascendingComparator = Comparator.naturalOrder();
// Create a ReverseComparator
ReverseComparator<Integer> reverseComparator = new ReverseComparator<>(ascendingComparator);
// Sort using ReverseComparator
Collections.sort(list, reverseComparator);
// Print sorted list
System.out.println(list);
}
}
এখানে:
ascendingComparator
একটি Comparator যা ছোট থেকে বড় (ascending) সাজানোর জন্য ব্যবহৃত হয়।ReverseComparator
ব্যবহার করে আমরা সেই ascendingComparator কে রিভার্স (descending) করে ফেলেছি।আউটপুট:
[4, 3, 2, 1]
এখানে সংখ্যাগুলি বড় থেকে ছোট (descending) অর্ডারে সাজানো হয়েছে।
ChainedComparator এবং ReverseComparator দুটি শক্তিশালী Comparator ক্লাস যা Apache Commons Collections লাইব্রেরির অংশ। ChainedComparator একাধিক Comparator কে একত্রে ব্যবহার করে সাজানো করতে সহায়তা করে, যেখানে ReverseComparator একটি বিদ্যমান Comparator কে রিভার্স করে সাজানোর জন্য ব্যবহৃত হয়। এই দুটি কৌশল Comparator-এর আচরণ কাস্টমাইজ করতে এবং সাজানোর কৌশল উন্নত করতে সহায়ক, যা আপনাকে আরও নমনীয় এবং কার্যকরী সাজানো এবং তুলনা করতে সাহায্য করে।
common.read_more